الحلقات في لغة ++C توفر ++C عددا من أساليب التكرار )حلقات( التي تستخدم لتكرار أجزاء من البرناام دادر ماا تادعو الحاجة لتحديد عدد مرات تكرار الحلقة تفحص كل حلقات ++C ما إذا كان تعبير ما يساوى صحيح (true) أو خطأ (false) يبلغها هذا ما إذا كان عليها التكرار مرة إضافية أخرى أو التودف فورا. هنالك ثالثة أنواع من الحلقات في + +C:.1 الحلقة for تأخذ الحلقة for الشكل العام التالي: for( expression1; expression2; expression3) statement; حيث يمثل: : expression1 بداية الحلقة. : expression2 شرط الحلقة الذي يفحص ديمة عداد الحلقة ويحدد ما إذا كان يجب تكرار الحلقة مرة أخرى أم ال. : expression3 يمثل زيادة الحلقة الذي يقوم بزيادة أو إنقاص ديمة عداد الحلقة. في الحلقة for يكون عدد مرات تنفيذ الحلقة مذكورا عادة في بدايتها. الشكل التالي يبين كيفية عمل الحلقة.for بداية احللقة إهناء خطأ شرط تكرار احللقة صح جسم احللقة عداد احللقة طريقة عمل الحلقة for 1
for ( int i = 1; i<= 10; i++) cout << i <<"\n"; return 0; مثال 1 : المثال التالي يقوم بطباعة ديم المتغير i من 1 إلى. 10 1 2 3 4 5 6 7 8 9 10 تحتوي األدواس التي تلي الكلمة األساسية for على ثالثة تعابير مختلفة تفصلها فاصلة منقوطة. تعمل هذه التعابير الثالثة في أغلب األودات على متغير يدعى عداد الحلقة وهو المتغير i في المثال السابق. هذه التعابير هي: بداية الحلقة: يمهد ديمة عداد الحلقة عادة ;1 = i. int شرط الحلقة: يفحص ديمة العداد ليرى ما إذا كان يجب تكرار الحلقة مرة أخرى أوإيقافها ;10=> i زيادة الحلقة: يقوم عادة بزيادة )أو إنقاص( ديمة عداد الحلقة ++i. المثال التالي يقوم بإنقاص عداد الحلقة ب 1 كلما تكررت الحلقة : مثال 2 : main ( ) for ( int j=10; j>0; j--) cout <<j<<" "; return 0; نتيجة التنفيذ: 10 9 8 7 6 5 4 3 2 1 نتيجة التنفيذ: main ( ) for (int j=10; j<100; j+=10) cout <<j<< ; return 0; ويمكن أيضا زيادة أو إنقاص عداد الحلقة بقيمة أخرى. مثال 3 :البرنام التالي يوضح ذلك : نتيجة التنفيذ: 10 20 30 40 50 60 70 80 90 2
حلقات for المتداخلة: تتكون الحلقات المتداخلة من حلقة خارجية وحلقة أخرى داخلية أو أكثر وفي كل مرة تتكرر الحلقة الخارجية يتم تكرار الحلقة الداخلية من بداية العداد إلى نهايته. تأخذ الحلقات for المتداخلة الشكل العام التالي : for (...) for (...) statements; مثال 4: int i,j; for (i=1 ; i<5;i++) for (j=1 ; j<4;j++) cout << i<<j<<" \t"; return 0; نالحظ هنا أن الحلقة الداخلية تتكرر 3 مرات لكل ديمة من ديم i )عداد الحلقة الخارجية(. نتيجة التنفيذ: 11 12 13 21 22 23 31 32 33 41 42 43 يمكننا وضع أي نوع حلقات أخرى وهكذا. من الحلقات ضمن أي نوع آخر ويمكن مداخلة الحلقات في حلقات متداخلاة فاي while( condition) statement.2 الحلقة while تأخذ الحلقة while الشكل العام التالي: مثال : 5 int n=3; while (n<30) cout<<n<<" "; n=n*2 ; return 0; والنتيجة هي 24: 3 6 12 أي يقوم بطباعة القيم التي تأخذها n طالما هذه القيم أصغر تماماا مان 30 أي ستساتمر هاذه الحلقاة فاي مضاعفة المتغير n إلى أن تصبح ديمة n أكبر من 30 عندها تتودف. 3
تتكون الحلقة من الكلمة األساسية while يليها تعبير اختبار بين أدواس ويكون جسم الحلقة محصورا بين أدواس حاصرة إال إذا كان يتألف من عبارة واحدة. الشكل التاالي يباين طريقاة عمال الحلقاة :while اهناء خطأ شرط تكرار احللقة صح جسم احللقة طريقة عمل الحلقة while مما يجدر التنويه إليه هنا أنه يتم فحص شرط الحلقة دبل تنفيذ جسم الحلقة وعلياه لان ياتم تنفياذ جسام الحلقة أبدا إذا كان الشرط خطأ عند دخول الحلقة وعليه المتغير n في المثال السابق يجب تمهيده عند ديمة أدل من. 100 مثال : 6 برنام حساب المتوسط الحسابي لعالمات 10 طالب في امتحان. main ( ) int i, grade, total ; float average; total = 0; i = 1; while (i <= 10) cin >>grade; total = total + grade; i = i + 1; average = total /10; cout << " Class average is: " << average <<"\n"; return 0; اذا كانت العالمات المدخلة كالتالي 75 65 51 89 71 54 80 79 81 90 Class average is : 73.5 فإن نتيجة التنفيذ: 4
.3 الحلقة :do while تعمل الحلقة do )غالبا تسمى (do while كالحلقة while إال أنها تفحص شرط الحلقة بعد تنفيذ جسم الحلقة. وتستخدم أيضا عندما نريد القيام بجزء من البرنام مرة واحدة على األدل. الشكل التالي يبين كيفية عمل الحلقة.do تأخذ الحلقة do الشكل التالي : do statement; while( condition); الحلقة do تفحص شرط الحلقة بعد تنفيذ جسم الحلقة وعليه ياتم تكارار جسام الحلقاة do مارة واحادة على األدل حتى ولو كان الشرط غير متحقق وتفسير ذلك أن التحقق من الشرط يتم بعاد التنفياذ ولاي دبله كما في الحلقتين السابقتين.. جسم احللقة إهناء خطأ شرط احللقة صح طريقة عمل الحلقة do.. while تبدأ الحلقة do بالكلمة األساسية do يليها جسم الحلقة بين أدواس حاصرة while ثم تعبير اختبار بين أدواس ثم فاصلة منقوطة. ثم الكلمة األساسية مثال 6 :البرنام التالي يقوم بطباعة األعداد من main ( ) int i = 1; do cout << i <<" "; i++; while (i <= 10); return 0; 1 إلى. 10 تقوم ;" " cout<< بطباعة مسافة خالية بين كل ردم واآلخر وعليه الخرج من البرنام يكون كالتالي: 1 2 3 4 5 6 7 8 9 10 5
تمارين : 1. برنام يطبع األعداد الزوجية الموجودة في المجال [100..1] بشكل تصاعدي : طريقة اولى بشكل تصاعدي وبشكل تنازلي. for(int i=2;i<=100;i=i+2) cout<<i<<"\t"; return 0; for(int i=1;i<=100;i++) if(i%2==0) cout<<i<<"\t"; return 0; for(int i=100;i>=1;i=i-2) cout<<i<<"\t"; return 0; بشكل تنازلي طريقة ثانية int i,s=0; for (i=1;i<=10;i++) s+=i; cout<<s; return 0; int i=1,s=0; while(i<=10) s=s+i; i++; cout<<s; return 0; برنام يحسب مجموع األعداد من 1 الى. 10 باستخدام for *********************** باستخدام while ***********************.2 6
int i=1,s=0; do s+=i; باستخدام do..while i++; while(i<=10); cout<<s; return 0; برنام إلدخال عشرة أحرف وطباعة حرف A إن وجد و كم مرة أدخل الحرف: # include <iostream.h> char letter ; int count=0; for (int i=1;i<=5;i++) cin >> letter ; if(letter=='a') count++; cout<<"letter A appears:"<<count<<"\n"; return 0;.3 برنام يطبع جدول الضرب للردم المدخل فقط. int i,x; cout<<"enter the number : "; cin>> x; for (i=1;i<=10;i++) cout<<x<<"*"<<i<<"="<<x*i<<" "; return 0;.4 7
برنام يطبع جدول الضرب الى العدد. 10 for (int i=1;i<=10;i++) cout<<"multiply Table for "<<i<<"\n\n"; for(int j=1;j<=10;j++) cout<<i<<"*"<<j<<"="<<i*j<<"\n"; return 0; برنام يطبع الشكل التالي :.5.6 int i,j; for (i=1;i<=5;i++) for (j=1;j<=i;j++) cout<< "*"; return 0; برنام يعمل إدخال عالمات عشرة طالب وطباعة المعدل العام للطالب العشرة: float mark,sum ; for(int i=1;i<=10;i++) cin >> mark ; sum = sum + mark ; cout << " average is : " << sum / 10 ; return 0;.7 8
float s=0,i; for(i=3.5;i<=9.5;i=i+0.5) s=s+i; cout<<s<<"\n"; return 0; # include <iostream.h> int x ; cout << " enter number: " ; cin >> x; for ( int i=1 ;i<=x ; i++ ) if(x%i==0) cout << i <<"\n"; return 0 ; طباعة مجموع األعداد 4.5,.,9.5 3.5, 4, برنام ايجاد دواسم عدد ما:.8.9 9